//题目链接：https://www.luogu.com.cn/problem/P1177#submit
#include <iostream>
using namespace std;
const int N = 1e6 + 10;
int a[N],t[N];
void merge_sort(int a[],int l,int r)
{
    if(l >= r) return;
    int mid = l + (r-l>>1);
    merge_sort(a,l,mid);
    merge_sort(a,mid+1,r);
    int k = 0 , i = l , j = mid+1;
    while(i <= mid && j <= r)
        t[k++] = a[i] > a[j] ? a[j++] : a[i++];
        
    while(i <= mid) t[k++] = a[i++];
    while(j <= r) t[k++] = a[j++];
    for(int i = 0 ; i < k ; ++i) a[l+i] = t[i];
}

int main()
{
    int n;
    scanf("%d",&n);
    for(int i = 0 ; i < n ; ++i) scanf("%d",&a[i]);
    merge_sort(a,0,n-1);
    for(int i = 0 ; i < n ; ++i) printf("%d ",a[i]);
    return 0;
}